package cn.iocoder.yudao.module.bpm.framework.amis.container;

import cn.iocoder.yudao.module.bpm.api.amis.dto.AmisListColumConfigDto;
import cn.iocoder.yudao.module.bpm.framework.amis.IAmisFormContainerHandler;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import org.springframework.stereotype.Component;

import java.util.ArrayList;
import java.util.List;

@Component
public class Crud2Container implements IAmisFormContainerHandler {

    private static final String COLUMNS_KEY = "columns";


    /**
     * 标签类型
     */
    @Override
    public String getStrategy() {
        return "crud2";
    }

    /**
     * 处理逻辑
     */
    @Override
    public List<AmisListColumConfigDto> handleGetColumns(JSONObject object) {

        JSONArray jsonColArray = object.getJSONArray(COLUMNS_KEY);
        List<AmisListColumConfigDto> amisListColumConfigDtoList = new ArrayList<>();
        jsonColArray.stream().forEach((jsonCol)->{
            if (jsonCol instanceof JSONObject) {
                JSONObject jsonObject = (JSONObject) jsonCol;
                if("operation".equals(jsonObject.getString("type"))){
                    return;
                }
                AmisListColumConfigDto build = AmisListColumConfigDto.builder()
                        .type(jsonObject.getString("type"))
                        .title(jsonObject.getString("title"))
                        .name(jsonObject.getString("name"))
                        .placeholder(jsonObject.getString("placeholder"))
                        .visible(jsonObject.getBoolean("visible"))
                        .format(jsonObject.getString("format"))
                        .jsonConfig(jsonObject)
                        .build();
                amisListColumConfigDtoList.add(build);
            }
        });

        return amisListColumConfigDtoList ;

    }
}
